package com.version1_1.dao;

import com.version1_1.model.MainPageModel;

import java.util.List;
import java.util.Map;

public interface PageDao {

    /**
     * @param @param  pageId
     * @param @return 设定文件
     * @return String    返回类型
     * @throws
     * @Title: getPageContent
     * @Description: TODO(获取文章内容)
     */
    public List getPageInfo(int pageId);

    /**
     * @param pageId
     * @return
     * @Description: TODO(获取除正文之外其他信息)
     * @Title: getPageOtherInfo
     */
    public Map<String, Object> getPageOtherInfo(int userId, int pageId);

    /**
     * @param @param  userId
     * @param @param  firstType
     * @param @param  pageNumber
     * @param @param  pageSize
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getPageList
     * @Description: TODO(获取登陆用户主页面预览信息)
     */
    public List getPageList(int userId, int firstType, int pageNumber, int pageSize);

    /**
     * @param @param  mainFocusList
     * @param @param  pageNumber
     * @param @param  pageSize
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getPageListNoLogin
     * @Description: TODO(获取未登陆用户主页面预览信息)
     */
    public List getPageListNoLogin(String mainFocusList, int pageNumber, int pageSize);

    /**
     * @param @param  firstType
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getTitleList
     * @Description: TODO(获取主页面大图信息数组)
     */
    public List getTitleList(int firstType);

    /**
     * @param @param  secondType
     * @param @param  thirdTypeName
     * @param @param  pageNumber
     * @param @param  pageSize
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getThirdPageList
     * @Description: TODO(获取三级分类页面预览信息)
     */
    public List getThirdPageList(int secondType, String thirdTypeName, int pageNumber, int pageSize);

    /**
     * @param @param  secondFocusString
     * @param @param  pageNumber
     * @param @param  pageSize
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getSecondPageList
     * @Description: TODO(获取二级分类页面预览信息)
     */
    public List getSecondPageList(String secondFocusString, int pageNumber, int pageSize);

    /**
     * @param @param  userId
     * @param @param  firstType
     * @param @return 设定文件
     * @return String    返回类型
     * @throws
     * @Title: getUserFocusId
     * @Description: TODO(获取用户关注列表)
     */
    public List<Integer> getUserFocusId(int userId, int firstType);

    /**
     * @param @param  commentString
     * @param @return 设定文件
     * @return boolean    返回类型
     * @throws
     * @Title: setPageComment
     * @Description: TODO(改变一条评论的点赞数)
     */
    public boolean setPageComPraise(String commentString);

    /**
     * @param commentString
     * @return
     * @Description: TODO（新增一条评论或回复）
     * @Title: setPageComment
     */
    public int setPageComment(String commentString);

    /**
     * @param @param  pageId
     * @param @param  pageNumber
     * @param @param  pageSize
     * @param @return 设定文件
     * @return List    返回类型
     * @throws
     * @Title: getCommentList
     * @Description: TODO(获取文章评论列表)
     */
    public List getCommentList(int pageId, int pageNumber, int pageSize);

    /**
     * 搜索页面标题
     *
     * @param key
     * @return
     */
    public List<Map<String, Object>> searchPage(String key);


    /**
     * 检查是否点赞过
     *
     * @param commentId
     * @param userId
     * @return
     */
    public boolean checkPraised(int commentId, int userId);

    /**
     * 记录用户阅读
     *
     * @param pageId
     * @return
     */
    public boolean doRead(int pageId);

    /**
     * 记录文章被转发(分享)
     *
     * @param pageId
     * @return
     */
    public boolean doTransmitCount(int pageId);

    /**
     * @param userId
     * @param pageId
     * @param commentType
     * @return
     * @Description: TODO(评论文章水文/好文)
     */
    public boolean pageContentComment(int userId, int pageId, int commentType);

    /**
     * @param userId
     * @param wantedInfo
     * @param infoSource
     * @return
     * @Description: TODO(在文章中对三级分类信息进行评论和提供信息源)
     */
    public boolean postComInPage(int userId, String wantedInfo, String infoSource);


    /**
     * @param commentId
     * @return
     * @Description: TODO(获取评论的回复列表)
     */
    public List getCommentReply(int commentId);

    /**
     * @Description: TODO(获取主界面上一个三级分类的信息)
     * @param typeId
     * @param firstType
     * @param pageSize
     * @return
     */
    public List getThirdInfo(int typeId, int firstType, int pageSize);


    // 测试Spring 中的model
    public MainPageModel getNewMainPage(int userId, int firstType, int pageNumber,
                                        int pageSize);
}
